import { ref, watch } from 'vue'
import { useRoute } from 'vue-router'

/**
 * SEO优化组合式函数
 * 用于管理页面的SEO元数据
 */
export function useSEO() {
  const route = useRoute()

  // 默认SEO配置
  const defaultSEO = {
    title: '麓谷智算科技 - 专业软件开发与技术服务',
    description: '麓谷智算科技专注于软件开发、数据库引擎、电商平台等技术服务，提供创业者之家平台、GuDB数据库引擎、箱野盲盒商城等优质产品。',
    keywords: '软件开发,数据库引擎,电商平台,创业服务,技术咨询,GuDB,盲盒商城',
    author: '麓谷智算科技',
    robots: 'index,follow',
    ogType: 'website',
    ogSiteName: '麓谷智算科技',
    twitterCard: 'summary_large_image',
    canonical: '',
    image: '/assets/img/logo.png'
  }

  // 页面特定的SEO配置
  const pageConfigs = {
    '/home': {
      title: '首页 - 麓谷智算科技',
      description: '麓谷智算科技是一家专业的软件开发公司，提供创新的技术解决方案和优质的客户服务。',
      keywords: '首页,软件开发,技术服务,麓谷智算'
    },
    '/software': {
      title: '公司产品 - 麓谷智算科技',
      description: '了解我们的核心产品：创业者之家平台、GuDB数据库引擎、箱野盲盒商城，为不同行业提供专业解决方案。',
      keywords: '公司产品,创业者之家,GuDB数据库,盲盒商城'
    },
    '/software/smartTown': {
      title: '创业者之家平台 - 专业创业支持服务',
      description: '创业者之家平台为初创企业提供全方位支持，包括项目管理、资源对接、知识分享等功能。',
      keywords: '创业者之家,创业平台,初创企业,项目管理'
    },
    '/software/bigData': {
      title: 'GuDB数据库引擎 - 高性能嵌入式数据库',
      description: 'GuDB是一款轻量级嵌入式关系型数据库引擎，支持MySQL语法，性能卓越，适用于资源受限环境。',
      keywords: 'GuDB,数据库引擎,嵌入式数据库,MySQL兼容'
    },
    '/software/surpriseYard': {
      title: '箱野盲盒商城 - 创新盲盒电商平台',
      description: '箱野盲盒商城是一个创新的盲盒电商平台，将未认领包裹转化为惊喜盲盒，为用户带来全新购物体验。',
      keywords: '箱野盲盒,盲盒商城,电商平台,惊喜购物'
    },
    '/service': {
      title: '相关服务 - 麓谷智算科技',
      description: '我们提供全方位的技术服务，包括软件定制开发、系统集成、技术咨询等专业服务。',
      keywords: '技术服务,软件定制,系统集成,技术咨询'
    },
    '/cases': {
      title: '客户案例 - 成功项目展示',
      description: '查看我们的成功案例，了解如何为不同行业的客户提供专业的技术解决方案。',
      keywords: '客户案例,成功项目,技术解决方案,行业案例'
    },
    '/newsinformation': {
      title: '新闻动态 - 麓谷智算科技',
      description: '了解公司最新动态、技术文章、行业资讯等内容。',
      keywords: '新闻动态,公司新闻,技术文章,行业资讯'
    },
    '/companyintroduction': {
      title: '公司介绍 - 关于麓谷智算科技',
      description: '麓谷智算科技成立于2020年，专注于软件开发和技术服务，致力于为客户提供创新的技术解决方案。',
      keywords: '公司介绍,关于我们,企业文化,发展历程'
    },
    '/jobchance': {
      title: '工作机会 - 加入麓谷智算科技',
      description: '查看最新职位信息，加入我们的团队，一起创造更美好的技术未来。',
      keywords: '工作机会,招聘信息,职业发展,技术团队'
    },
    '/contactus': {
      title: '联系我们 - 麓谷智算科技',
      description: '欢迎联系我们了解更多信息，我们将为您提供专业的技术咨询和服务。',
      keywords: '联系我们,技术咨询,商务合作,客户服务'
    }
  }

  // 设置页面SEO
  const setSEO = (config = {}) => {
    const currentPath = route.path
    const pageConfig = pageConfigs[currentPath] || {}

    // 合并配置
    const seoConfig = {
      ...defaultSEO,
      ...pageConfig,
      ...config
    }

    // 设置标题
    document.title = seoConfig.title

    // 设置或更新meta标签
    setMetaTag('description', seoConfig.description)
    setMetaTag('keywords', seoConfig.keywords)
    setMetaTag('author', seoConfig.author)
    setMetaTag('robots', seoConfig.robots)

    // Open Graph标签
    setMetaTag('og:title', seoConfig.title, 'property')
    setMetaTag('og:description', seoConfig.description, 'property')
    setMetaTag('og:type', seoConfig.ogType, 'property')
    setMetaTag('og:site_name', seoConfig.ogSiteName, 'property')
    setMetaTag('og:url', window.location.href, 'property')
    setMetaTag('og:image', getFullImageUrl(seoConfig.image), 'property')

    // Twitter Card标签
    setMetaTag('twitter:card', seoConfig.twitterCard, 'name')
    setMetaTag('twitter:title', seoConfig.title, 'name')
    setMetaTag('twitter:description', seoConfig.description, 'name')
    setMetaTag('twitter:image', getFullImageUrl(seoConfig.image), 'name')

    // 设置canonical链接
    setCanonicalUrl(seoConfig.canonical || window.location.href)

    // 设置structured data
    setStructuredData(seoConfig)
  }

  // 设置meta标签
  const setMetaTag = (name, content, attribute = 'name') => {
    if (!content) return

    let meta = document.querySelector(`meta[${attribute}="${name}"]`)
    if (!meta) {
      meta = document.createElement('meta')
      meta.setAttribute(attribute, name)
      document.head.appendChild(meta)
    }
    meta.setAttribute('content', content)
  }

  // 设置canonical URL
  const setCanonicalUrl = (url) => {
    let canonical = document.querySelector('link[rel="canonical"]')
    if (!canonical) {
      canonical = document.createElement('link')
      canonical.setAttribute('rel', 'canonical')
      document.head.appendChild(canonical)
    }
    canonical.setAttribute('href', url)
  }

  // 获取完整图片URL
  const getFullImageUrl = (imagePath) => {
    if (!imagePath) return ''
    if (imagePath.startsWith('http')) return imagePath
    return window.location.origin + imagePath
  }

  // 设置结构化数据
  const setStructuredData = (config) => {
    const structuredData = {
      '@context': 'https://schema.org',
      '@type': 'Organization',
      'name': '麓谷智算科技',
      'url': window.location.origin,
      'logo': getFullImageUrl('/assets/img/logo.png'),
      'description': config.description,
      'address': {
        '@type': 'PostalAddress',
        'addressCountry': 'CN',
        'addressRegion': '湖南省',
        'addressLocality': '长沙市'
      },
      'contactPoint': {
        '@type': 'ContactPoint',
        'contactType': 'customer service',
        'availableLanguage': ['zh-CN', 'en']
      }
    }

    // 移除旧的结构化数据
    const oldScript = document.querySelector('script[type="application/ld+json"]')
    if (oldScript) {
      oldScript.remove()
    }

    // 添加新的结构化数据
    const script = document.createElement('script')
    script.type = 'application/ld+json'
    script.textContent = JSON.stringify(structuredData)
    document.head.appendChild(script)
  }

  // 动态设置新闻详情页SEO
  const setNewsSEO = (newsData) => {
    if (!newsData) return

    setSEO({
      title: `${newsData.title} - 麓谷智算科技`,
      description: newsData.summary || newsData.content?.substring(0, 160),
      keywords: `${newsData.title},公司新闻,${newsData.category || ''}`,
      ogType: 'article',
      image: newsData.image || '/assets/img/logo.png'
    })

    // 添加文章特定的结构化数据
    const articleData = {
      '@context': 'https://schema.org',
      '@type': 'Article',
      'headline': newsData.title,
      'description': newsData.summary,
      'image': getFullImageUrl(newsData.image),
      'datePublished': newsData.publishDate,
      'dateModified': newsData.updateDate || newsData.publishDate,
      'author': {
        '@type': 'Organization',
        'name': '麓谷智算科技'
      },
      'publisher': {
        '@type': 'Organization',
        'name': '麓谷智算科技',
        'logo': {
          '@type': 'ImageObject',
          'url': getFullImageUrl('/assets/img/logo.png')
        }
      }
    }

    const script = document.createElement('script')
    script.type = 'application/ld+json'
    script.textContent = JSON.stringify(articleData)
    document.head.appendChild(script)
  }

  // 监听路由变化，自动设置SEO
  watch(() => route.path, () => {
    setSEO()
  }, { immediate: true })

  return {
    setSEO,
    setNewsSEO
  }
}